/*
 * main.cc
 *
 *  Created on: Nov 18, 2010
 *      Author: fify
 */

#include <iostream>
#include <stdio.h>
#include <set>

using namespace std;

class Dot
{
public:
	int x, y;
};

class Double
{
	double value;

public:
	Double(double _v)
	{
		value = _v;
	}

	bool operator == (const Double dou) const
	{
		return value - dou.value > -1e-9 && value - dou.value < 1e-9;
	}
	bool operator < (const Double dou) const
	{
		if(*this == dou)
			return false;

		return value < dou.value;
	}
};

set<Double> st;

Dot dot[205];

void solve(int n)
{
	int flag = 0;

	st.clear();

	for(int i = 0;i<n;i++)
	{
		scanf("%d%d", &dot[i].x, &dot[i].y);
	}

	for(int i = 0;i<n;i++)
	{
		for(int j = i + 1;j<n;j++)
		{
			if(dot[i].x == dot[j].x)
			{
				flag = 1;
			}
			else
			{
				st.insert(Double(1.0 * (dot[i].y - dot[j].y) / (dot[i].x - dot[j].x)));
			}
		}
	}

	printf("%d\n", st.size() + flag);
}
int main()
{
	int n;
	while(scanf("%d", &n) != EOF)
	{
		solve(n);
	}
	return 0;
}
